package com.example.mycamerademo.utils

import android.Manifest
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity
import com.permissionx.guolindev.PermissionX

import java.util.*
import kotlin.collections.ArrayList

/**
 * @author tgw
 * @date 2021/7/16
 * @describe PermissionX 勾选了权限不在询问后的处理
 */
object PermissionHelper {


    /**
     * 请求权限
     */
//     fun requestPermission(context: FragmentActivity, permissions:MutableList<String>, callback: () -> Unit) {
//        //辅助判断勾选了不在询问
//        var onForwardToSettings = false
//        PermissionX.init(context)
//            .permissions(
//                permissions
//            )
//            .onForwardToSettings { scope, deniedList ->
//                onForwardToSettings = true
//                initAlwaysRefuseDialog(context,callback)
//            }
//            .request { allGranted, grantedList, deniedList ->
//               if (!onForwardToSettings && !allGranted){
//                   initRefuseDialog(context, permissions,callback)
//               }
//            }
//    }
//
//    /**
//     * 获取应用详情页面intent
//     */
//    private fun openPermissionSettingIntent(context: FragmentActivity) {
//        val localIntent = Intent()
//        localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
//        localIntent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"
//        localIntent.data = Uri.fromParts("package", context.packageName, null)
//        context.startActivity(localIntent)
//    }
//
//    /**勾选了 不在询问 打开设置界面*/
//   private fun initAlwaysRefuseDialog(context: FragmentActivity,callback: () -> Unit) {
//     CustomDialog(context)
//         .setTitle("提示")
//         .setMessage("你应该同意这些权限")
//         .setNegtive("拒绝")
//         .setPositive("同意")
//         .setOnClickBottomListener(object : CustomDialog.OnClickBottomListener{
//             override fun onPositiveClick(view: View) {
//                 openPermissionSettingIntent(context)
//             }
//
//             override fun onNegtiveClick(view: View) {
//                 callback.invoke()
//             }
//
//         }).show()
//    }
//
//    private fun initRefuseDialog(context: FragmentActivity, permissions:MutableList<String>,callback: () -> Unit) {
//        CustomDialog(context)
//            .setTitle("提示")
//            .setMessage("你应该同意这些权限")
//            .setNegtive("拒绝")
//            .setPositive("同意")
//            .setOnClickBottomListener(object : CustomDialog.OnClickBottomListener{
//                override fun onPositiveClick(view: View) {
//                    requestPermission(context, permissions,callback)
//                }
//
//                override fun onNegtiveClick(view: View) {
//                    callback.invoke()
//                }
//            }).show()
//    }
//
//
//
//    fun tryRequestPermission(activity: AppCompatActivity?): Boolean {
//        if (!checkPermission(activity)) {
//            var allowPermission = false
//            PermissionX.init(activity)
//                .permissions(Manifest.permission.WRITE_EXTERNAL_STORAGE,
//                    Manifest.permission.CAMERA,
//                    Manifest.permission.READ_PHONE_STATE)
//                .onForwardToSettings { scope, deniedList ->
//                    ToastDelegate.showShort(activity,"你应该去设置里面开启这些权限：$deniedList")
//                }
//                .request { allGranted, grantedList, deniedList ->
//                    allowPermission = allGranted
//                }
//            return allowPermission
//        } else {
//            return true
//        }
//    }
//
//
//    private fun checkPermission(context: Context?): Boolean {
//        val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE,
//            Manifest.permission.CAMERA,
//            Manifest.permission.READ_PHONE_STATE)
//        var granted = true
//        for (index in permissions.indices) {
//            if (!PermissionX.isGranted(context, permissions[index])) {
//                granted = false
//                break
//            }
//        }
//        return granted
//    }

}